package Test;

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        /*1. 字符串处理题：统计字符出现次数
          题目：编写一个Java程序，接收一个字符串，统计其中每个字符（包括字母、数字、符号、空格）出现的次数，
          并按“字符:次数”的格式输出结果（输出顺序不限）。
          示例：输入："Hello World!"   输出（示例）：H:1, e:1, l:3, o:2,  :1, W:1, r:1, d:1, !:1   */
        //键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str = sc.nextLine();
        int[] arr = countLetters(str);//

        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != 0) {
                System.out.println((char) (i) + ":" + arr[i]);//i表示索引，索引又代表每个字符的asc码值
            }                                             //arr[i]表示第i个字符出现的次数
        }
    }

    // 定义一个方法统计出字符串中每个字符出现的次数
    public static int[] countLetters(String str) {
        int[] arr = new int[127];//在这个数组当中，arr[i]表示第i个字符出现的次数
        //i表示索引，而索引又代表每个字符的asc码值
        // 此for循环求各个字母出现的次数
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);// 依次取出每个字符
            int index = c;// 这样就可以得到每个字符对应到数组中的索引了
            arr[index] = arr[index] + 1;// 对应字符出现则存储字符的数组加1
        }
        return arr;
    }
}
